問題解説: 卵かけマック

問題文

以下の図のようなDMZとLOCALの2つの空間が接続されている内部向けDNSサーバと、外部向けのwebサーバがあり、webサーバは8000番で待ち受けている。
LOCALからそのwebサーバの8000番に対しFQDNでアクセスしても表示されないと社内の各所から連絡があった。

そのため、内部からwebサーバにFQDNでアクセスできる様に解決してほしい。
ただし、既に構築してあるこのDNSサーバを使い、FQDNで正常にアクセスできることを証明してほしい。

制約

この問題での制約は問題文で指示されている通り、図にあるdns-serverを必ず使用することです。

スタート地点

  • DNSの問い合わせができない

ゴール地点

  • DNSの問い合わせができる
  • 正常に問い合わせができているかをコマンドを使用して証明する
  • 健全なDNSサーバを構築する

必要情報

  • ドメイン: ictsc.local
  • ホスト:
  • web-server: www.ictsc.local
  • dns-server: dns.ictsc.local

情報

サーバ IP アドレス アカウント パスワード
dns 192.168.4.70 admin e4EYoNiTlII4zEE7udxG
web 192.168.4.71 admin Eaa4mXBsgygxag934x3H

トラブルの概要

図のように各サーバは2つのNICをもちそれぞれDMZとLOCALに接続されていました。トラブルの概要としてLOCAL側からdns-serverに対して名前解決の問い合わせをしてもドメインと紐づけられているIPアドレスが帰ってこないというものでした。

解説

このトラブルは/etc/bind/以下にDMZとLOCALの空間から名前解決できるように定義されたzoneファイルが不適切のため発生していました。それがこの4つのファイルです。

  • 0.4.168.192.in-addr.arpa
  • 64.4.168.192.in-addr.arpa
  • ictsc.local-0.zone
  • ictsc.local-64.zone

トラブルの原因としてこの4つのファイル全てに共通して以下の3つがありました。

  • SOAレコードを定義する箇所で最初の@が抜けている
  • SOAレコードのhostmaster-emailの最後に.がついていない
  • SOAレコードを括弧で囲むときに最後が)ではなく}となっている

問題の初期状態は以上の3つが原因でDMZとLOCALから名前解決ができませんでした。なので適切な状態に書き直して名前解決ができることを提示すると基準点となります。満点にするためにはゴール地点に記載した通り健全なDNSサーバを構築するまで行うことです。実はこのdns-serverはDMZからictsc.local以外の名前解決をしてしまいます。つまりオープンリゾルバ状態でした。なので外部からはictsc.local以外は受け付けないように設定を変更する必要があります。それには以下のファイルを書き換える必要があります。

  • named.conf.default-zones

解答例

まず、/etc/bind/以下の0.4.168.192.in-addr.arpaを書き換えます。これはDMZの空間からの逆引きを解決するためのファイルです。

$TTL 3600
IN SOA dns.ictsc.local. root.ictsc.local (
2018022400
3600
900
604800
86400
}

IN NS dns.ictsc.local.
10 IN PTR dns.ictsc.local.
11 IN PTR www.ictsc.local.

これを先ほど指摘した3つの原因を以下のように修正します。

$TTL 3600
@ IN SOA dns.ictsc.local. root.ictsc.local. (
2018022400
3600
900
604800
86400
)

IN NS dns.ictsc.local.
10 IN PTR dns.ictsc.local.
11 IN PTR www.ictsc.local.

これを他のファイルも同様に修正し、サービスの再起動を行うことで名前解決ができるようになります。
次にオープンリゾルバを解決するためにnamed.conf.default-zonesを修正します。このファイルの中にinternalexternalのゾーンによって読み込むファイルを記述している箇所があります。そこにmatch-clientsを追加して適切な空間を記述することでオープンリゾルバを回避することができます。

採点基準

  • 上記のトラブルを指摘
  • 対策後にちゃんと名前解決ができていることを提示
  • オープンリゾルバとして動作してしまっているのでそれを指摘して対処(加点対象)

講評

この問題はウォームアップ問題として作成しましたが実際に解答を送ってくれたチームは半分ぐらいで想定と違う結果となり驚きました。その中でもちゃんと最後まで解けていたのは1チームのみでした。